package entity;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.NoArgsConstructor;
import utils.json.InitConfig;

import java.util.LinkedHashMap;
import java.util.List;

@NoArgsConstructor
@Data
public class LocalVideoConfig {
    private String dir;
    private String saveTime;
    private List<VideoItem> videos;

    public JSONObject toJSON() {
        JSONObject object = new JSONObject(new LinkedHashMap<>());
        object.put("本地下载路径", this.dir);
        object.put("本地配置文件保存时间", this.saveTime);
        object.put("RSSHub状态", InitConfig.isEnableRssHub() ? "已启用" : "未启用");
        object.put("WebDav状态", InitConfig.isEnableWebDav() ? "已启用" : "未启用");
        object.put("Aria2状态", InitConfig.isEnableAria2() ? "已启用" : "未启用");

        JSONArray videoArray = new JSONArray();
        for (VideoItem item : this.videos) {
            JSONObject videoItem = new JSONObject();
            JSONObject videoInfo = new JSONObject(new LinkedHashMap<>());
            videoItem.put("视频标题："+item.getTitle(), videoInfo);
            videoInfo.put("视频作者", item.getAuthor());
            //RSSHub
            if (InitConfig.isEnableRssHub()) {
                int isDownLoad = item.getIsDownload();
                switch (isDownLoad) {
                    case 0:
                        videoInfo.put("本地下载状态", "未下载。");
                        break;
                    case 1:
                        videoInfo.put("本地下载状态", "下载中。");
                        break;
                    case 2:
                        videoInfo.put("本地下载状态", "已下载。");
                        break;
                }
            } else {
                videoInfo.put("本地下载状态", "未启用RSSHub功能。");
            }
            //WebDav
            if (InitConfig.isEnableWebDav()) {
                int isWebDav = item.getIsWebDav();
                switch (isWebDav) {
                    case 0:
                        videoInfo.put("WebDav上传状态", "未上传。");
                        break;
                    case 1:
                        videoInfo.put("WebDav上传状态", "上传中。");
                        break;
                    case 2:
                        videoInfo.put("WebDav上传状态", "已上传。");
                        break;
                }
            } else {
                videoInfo.put("WebDav上传状态", "未启用WebDav功能。");
            }
            //Aria2
            if (InitConfig.isEnableAria2()) {
                videoInfo.put("是否上传到Aria2", InitConfig.isEnableAria2() ? "已上传。" : "未上传。");
            } else {
                videoInfo.put("Aria2上传状态", "未启用Aria2功能。");
            }
            videoArray.add(videoItem);
        }
        object.put("视频状态", videoArray);
        return object;
    }
}
